Computer virtualization is a technique that involves encapsulating a computing machine platform into a virtual machine (VM) that is executed under the control of virtualization software running on a hardware computing platform (also referred to herein as “host computer” or “host”). A group of hardware computing platforms may be organized as a cluster to provide resources for VMs. In a data center, it is common to see hundreds, even thousands, of VMs running on multiple clusters of hosts.
VMs running in hosts are often actively managed to improve their overall performance. One example is transfer of VMs from one host to another host. As used herein, “transfer” of a VM may include copying the VM to a new location and deleting the original VM, or replicating a VM to a new location, resulting in an additional copy of the VM. The transfer of a VM may be “live,” meaning a running VM is moved, or not. VMs may undergo transfer from busy host computers to underutilized host computers to achieve load balancing across host computers. Transfer of VMs also may be carried out to enable host computer maintenance. Examples of tools that may be used to perform a VM transfer include vMotion® and vSphere® Replication™, which are commercially available from VMware, Inc. of Palo Alto, Calif.
Transfers of VMs across data centers in particular may need to be carried out across various components of the system, such as (physical and/or virtual) storage devices, network devices, network boosters (e.g., wide area network (WAN) optimizers), etc. Some components on a transfer path may be underperforming components, historically and/or currently, and may undermine a VM transfer. Additionally, network connections between components on a transfer path may be underperforming, historically and/or currently. Transfer operations for large VMs that utilize suboptimal paths may run for days before ultimately failing, which can cause significant waste of resources and user frustration.